昨日题目答案
onblur 在 input 失去焦点时候触发。与之对应的是 onfocus 事件。无论 input 是否有值、值是否有变化,都会触发。
onchange 在 input 发生变化然后在失去焦点的时候触发。且先于 onblur 触发。onchange 只有在 input 的值必须与前一次输入不同才会触发。
<body>
    <input type="text" id="a" placeholder="onchange" onchange="onfun()">
    <input type="text" id="b" placeholder="onblur" onblur="onblu()">
  <script>
    function onfun() {console.log('onchange')}
    function onblu() { console.log('onblur') }
  </script>
</body>
文档流就是指元素在 HTML 文档中位置顺序决定排布的过程。HTML 元素有块级元素和行内元素,块级元素一个占一行,行内元素在一行内依次排布。整体元素从上到下的排布顺序如同瀑布一样。
脱离文档流即脱离了排布的规则。可以使用 float、absolute/fixed 来脱离文档流。脱离文档流的元素不受文档流内元素的影响。
解法1:
function Fibonacci (n) {
  let arr = [1, 1]
  for (let i = 2; i < n + 1; i++) {
    arr[i] = arr[i - 1] + arr[i - 2]
  }
  return arr
 //return arr[n]
}
解法2:
let Fibonacci = num => {
    if (!Fibonacci.sequence) Fibonacci.sequence = [1, 1]
    if (Fibonacci.sequence[num] !== undefined) return Fibonacci.sequence.slice(0, num)
    for (var i = Fibonacci.sequence.length; i < num + 1; i++) {
        Fibonacci.sequence[i] = Fibonacci.sequence[i - 1] + Fibonacci.sequence[i - 2]
    }
    return Fibonacci.sequence.slice(0, num)
}
解法3:
const fib = (limit = 10, arr = [1, 1]) => {
  // 使用循环
  // if (limit < 3) {
  //   return arr;
  // }
  // const result = arr;
  // while (result.length < limit) {
  //   const len = result.length;
  //   result.push(result[len - 1] + result[len - 2]);
  // }
  // return result;
  // 使用递归
  if (arr.length < limit) {
    const len = arr.length;
    return fib(limit, [...arr, arr[len - 1] + arr[len - 2]]);
  } else {
    return arr;
  }
};
console.log(fib());
console.log(fib(9));